import { get, post, postWithQueryParams } from "@/api/request";

/**
 * 设备管理控制器 / 设备管理控制器添加监控设备
 * @param {object} data
 * @param {number} [data.accountId] 萤石云账号id
 * @param {string} [data.address] 设备地址
 * @param {number} [data.channelNumber] 通道号
 * @param {string} [data.equipmentName] 设备名称
 * @param {string} [data.equipmentNumber] 设备编号
 * @param {string} [data.equipmentType] 设备类型
 * @param {number} [data.projectPlanningId] 项目id
 * @param {string} [data.serialNumber] 设备序列号
 * @param {number} [data.xcoordinate] xcoordinate
 * @param {number} [data.ycoordinate] ycoordinate
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<MonitorEquipment页面展示实体>}
 * @author 肖玮
 */
export function equipmentAdd(data, config) {
  return post("/equipment/add", data, config);
}

/**
 * 设备管理控制器 / 设备管理控制器删除监控设备
 * @param {object} params
 * @param {object} data
 * @param {number} params.id id
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<MonitorEquipment页面展示实体>}
 * @author 肖玮
 */
export function equipmentDelete(params, data, config) {
  return postWithQueryParams("/equipment/delete", params, data, config);
}

/**
 * 设备管理控制器 / 设备管理控制器查询监控设备详情
 * @param {object} params
 * @param {number} params.id id
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<MonitorEquipment页面展示实体>}
 * @author 肖玮
 */
export function equipmentDetail(params, config) {
  return get("/equipment/detail", params, config);
}

/**
 * 设备管理控制器 / 设备管理控制器分页查询监控设备
 * @param {object} data
 * @param {string} [data.equipmentNumber] 设备编号(已包含搜索设备名称)
 * @param {string} [data.equipmentType] 设备类型
 * @param {number} [data.length] 分页大小
 * @param {number} [data.orderAsc] 排序方向
 * @param {string} [data.orderColum] 排序字段
 * @param {number} [data.pageIndex] 分页下标
 * @param {string} [data.projectName] 项目名称
 * @param {number} [data.start] 查询记录起始下标
 * @param {string} [data.status] 设备状态
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<分页返回实体<MonitorEquipment页面展示实体>>}
 * @author 肖玮
 */
export function equipmentPage(data, config) {
  return post("/equipment/page", data, config);
}

/**
 * 设备管理控制器 / 设备管理控制器更新监控设备
 * @param {object} data
 * @param {number} [data.accountId] 萤石云账号id
 * @param {string} [data.address] 设备地址
 * @param {number} [data.channelNumber] 通道号
 * @param {string} [data.equipmentName] 设备名称
 * @param {string} [data.equipmentNumber] 设备编号
 * @param {string} [data.equipmentType] 设备类型
 * @param {number} [data.id] id
 * @param {number} [data.projectPlanningId] 项目id
 * @param {string} [data.serialNumber] 设备序列号
 * @param {string} [data.status] 设备状态
 * @param {number} [data.xcoordinate] xcoordinate
 * @param {number} [data.ycoordinate] ycoordinate
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<MonitorEquipment页面展示实体>}
 * @author 肖玮
 */
export function equipmentUpdate(data, config) {
  return post("/equipment/update", data, config);
}

/**
 * @template T
 * @typedef {Object} 分页返回实体
 * @property {T[]} content - 内容
 * @property {number} elementsNo
 * @property {number} limit
 * @property {number} number
 * @property {number} totalElements
 * @property {number} totalPages
 * @description 分页返回实体
 */

/**
 * @typedef {object} MonitorEquipment页面展示实体 萤石云监控设备页面展示实体
 * @property {number} accountId 萤石云账号id
 * @property {string} address 设备地址
 * @property {boolean} canDelete 是否拥有删除权限
 * @property {boolean} canEdit 是否拥有编辑权限
 * @property {number} channelNumber 通道号
 * @property {string} createTime 创建时间
 * @property {string} createUser 创建用户
 * @property {string} createUserDeptName 编制部门名称
 * @property {string} createUserRealName 编制人姓名
 * @property {string} equipmentName 设备名称
 * @property {string} equipmentNumber 设备编号
 * @property {string} equipmentType 设备类型
 * @property {number} id
 * @property {string} projectName 项目名称
 * @property {number} projectPlanningId 项目id
 * @property {string} serialNumber 设备序列号
 * @property {string} status 设备状态
 * @property {number} xcoordinate
 * @property {number} ycoordinate
 * @description 萤石云监控设备页面展示实体
 */
